guint iconic : 1;
};
-typedef GtkWidgetClass GtkModelButtonClass;
+typedef struct _GtkModelButtonClass GtkModelButtonClass;
+
+struct _GtkModelButtonClass
+{
+ GtkWidgetClass parent_class;
+
+ void (* clicked) (GtkModelButton *button);
+};
static void gtk_model_button_actionable_iface_init (GtkActionableInterface *iface);
G_DEFINE_TYPE_WITH_CODE (GtkModelButton, gtk_model_button, GTK_TYPE_WIDGET,
}
static void
-gtk_model_button_clicked (GtkGestureClick *gesture,
- guint n_press,
- double x,
- double y,
- GtkModelButton *self)
+gtk_model_button_clicked (GtkModelButton *self)
{
if (self->menu_name != NULL)
{
close_menu (self);
}
- g_signal_emit (self, signals[SIGNAL_CLICKED], 0);
-
if (self->action_helper)
gtk_action_helper_activate (self->action_helper);
}
widget_class->focus = gtk_model_button_focus;
widget_class->get_accessible = gtk_model_button_get_accessible;
+ class->clicked = gtk_model_button_clicked;
+
/**
* GtkModelButton:role:
*
signals[SIGNAL_CLICKED] = g_signal_new (I_("clicked"),
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
- 0,
+ G_STRUCT_OFFSET (GtkModelButtonClass, clicked),
NULL, NULL,
NULL,
G_TYPE_NONE, 0);
gtk_popover_menu_set_active_item (GTK_POPOVER_MENU (popover), target);
}
+static void
+emit_clicked (GtkModelButton *button)
+{
+ g_signal_emit (button, signals[SIGNAL_CLICKED], 0);
+}
+
static void
gtk_model_button_init (GtkModelButton *self)
{
gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (gesture), FALSE);
gtk_gesture_single_set_exclusive (GTK_GESTURE_SINGLE (gesture), TRUE);
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), GDK_BUTTON_PRIMARY);
- g_signal_connect (gesture, "released", G_CALLBACK (gtk_model_button_clicked), self);
+ g_signal_connect_swapped (gesture, "released", G_CALLBACK (emit_clicked), self);
gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (gesture), GTK_PHASE_CAPTURE);
gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (gesture));
}